package com.example.learn.hwod;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.Scanner;

public class _31栈求生游戏 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] array = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        int negative=0;
        LinkedList<Integer> positive = new LinkedList<>();
        for (int num : array) {
            if (num==0) {
                System.out.println(-1);
                return;
            }else if (num>0){
                positive.addLast(num);
            }else{
                while (true) {
                    if (positive.size() == 0) {
                        // 如果栈为空，即没有正数，此时左边逃出来的负数直接逃生成功
                        negative++;
                        break;
                    }

                    // 如果栈不为空，则栈中有缓冲的正数，此时负数需要和栈顶正数进行pk
                    int pk = num + positive.removeLast();

                    if (pk > 0) {
                        // 如果pk结果大于0，则负数逃生失败，栈顶的正数减少战斗力
                        positive.addLast(pk);
                        break;
                    } else if (pk < 0) {
                        // 如果pk结果小于0，则负数pk成功，此时需要继续和新栈顶正数pk，即进入下一轮
                        num = pk;
                    } else {
                        // 如果pk结果为0，则同归于尽
                        break;
                    }
                }

            }
        }

        System.out.println(negative + positive.size());

    }
}
